﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Libreria.SIG.ServiciosRFID;

namespace Libreria.SIG.Negocio
{
    public class ExternoNegocio
    {
        public IDictionary<Int32, String> consultarUsuarios(String perfil, Boolean conCodigo, String CadenaDeConexion)
        {
            Dictionary<Int32, String> usuarios = new Dictionary<int, string>();
            Int32 perfilConvertido;
            Int32.TryParse(perfil, out perfilConvertido);

            ServiciosRFID.WebServiceRFID servicio = new WebServiceRFID();
            String[][] usuariosDelServicio = servicio.ConsultarPersonasPorPerfil(perfilConvertido);

            foreach (String[] usuario in usuariosDelServicio)
            {
                Int32 codigo;
                Int32.TryParse(usuario[0], out codigo);
                if (conCodigo)
                {
                    usuarios.Add(codigo, usuario[0] + " - " + usuario[1]);
                }
                else
                {
                    usuarios.Add(codigo, usuario[1]);
                }
            }
            return usuarios;
        }

        public List<Persona> consultarUsuarios(String perfil, Boolean conCodigo, String numeroDeDocumento, String CadenaDeConexion)
        {
            List<Persona> usuarios = new List<Persona>();
            Int32 perfilConvertido;
            Int32.TryParse(perfil, out perfilConvertido);

            ServiciosRFID.WebServiceRFID servicio = new WebServiceRFID();
            Persona[] usuariosDelServicio = servicio.ConsultarPersonasConPerfil(perfilConvertido);

            if (!string.IsNullOrEmpty(numeroDeDocumento))
            {
                usuarios.AddRange(from item in usuariosDelServicio where item.NumeroDeDocumento.Contains(numeroDeDocumento) select item);
            }
            else
            {
                usuarios = usuariosDelServicio.ToList<Persona>();
            }

            usuarios.ForEach(u => u.Nombre = u.Apellido + ", " + u.Nombre);
            
            return usuarios;
        }

        public IDictionary<Int32, String> consultarPerfiles(String CadenaDeConexion)
        {
            Dictionary<Int32, String> perfiles = new Dictionary<int, string>();
            ServiciosRFID.WebServiceRFID servicio = new WebServiceRFID();
            String[][] perfilesDelServicio = servicio.ListaDePerfiles();

            foreach (String[] perfil in perfilesDelServicio)
            {
                Int32 codigo;
                Int32.TryParse(perfil[0], out codigo);
                perfiles.Add(codigo, perfil[1]);
            }

            return perfiles;
        }

        public Int32 consultarPerfilesPorUsuario(Int32 idUsuario, String CadenaDeConexion)
        {
            ServiciosRFID.WebServiceRFID servicio = new WebServiceRFID();
            Int32 perfil = servicio.PerfilDeUsuario(idUsuario);
            return perfil;
        }

        public static Boolean autenticarUsuario(String nombre, String clave, String CadenaDeConexion, out Int32 identificador, out Int32 perfil)
        {
            Boolean retorno = false;
            ServiciosRFID.WebServiceRFID servicio = new WebServiceRFID();
            
            Int32[] sesion = servicio.inicioDeSesion(nombre, clave);
            if (sesion[0] > 0 && sesion[1] > 0)
            {
                retorno = true;            }
            perfil = sesion[1];
            identificador = sesion[0];
            return retorno;
        }

        public static Persona usuarioPorCodigo(Int32 codigo)
        {
            ServiciosRFID.WebServiceRFID servicio = new WebServiceRFID();
            Persona persona = servicio.persona(codigo);
            return persona;
        }

        public Persona[] consultarLosUsuarios(String CadenaDeConexion)
        {
            Dictionary<Int32, String> usuarios = new Dictionary<int, string>();
            ServiciosRFID.WebServiceRFID servicio = new WebServiceRFID();
            Persona[] usuariosDelServicio = servicio.personas();
            return usuariosDelServicio;
        }
        
    }
}

